<?php

require('configs/include.php');

class c_enviar_peticion extends super_controller {

    public function responder() {

        $respuesta = new respuesta($this->post);
        $as = $_SESSION['usuario']['username'];
        $respuesta->set('usuario', $as);
        if (is_empty($respuesta->get('descripcion'))) {
            throw_exception("Debe ingresar la descripcion de la respuesta");
        }
//        if (is_empty($respuesta->get('asunto'))) {
//            throw_exception("Debe ingresar el asunto de la petición");
//        }
        $respuesta->set('peticion', $this->post->idpeticionopen);
        $this->orm->connect();
        $this->orm->insert_data("normal", $respuesta);
        $this->orm->close();
        $this->type_warning = "success";
        $this->msg_warning = "La petición ha sido enviada correctamente";
        $this->img_warning = "correct.png";
        $this->engine->assign('img_warning', $this->img_warning);
        $this->temp_aux = 'message.tpl';

        $this->engine->assign('type_warning', $this->type_warning);
        $this->engine->assign('msg_warning', $this->msg_warning);
    }

    public function cerrar() {
        $typeSession = $_SESSION['usuario']['username'];
        if (($typeSession == $this->get->usuario) || $_SESSION['usuario']['tipo'] == 'lider') { /* WTF? */
            $options['peticion']['lvl2'] = "by_oneuser";
            $cod['peticion']['usuario'] = $typeSession;
            $cod['peticion']['id'] = $this->get->id;
            $peticion = new peticion();
            $peticion->set('id', $this->get->id);
            $this->orm->connect();

            $this->orm->read_data(array("peticion"), $options, $cod);
            $peticiones = $this->orm->get_objects("peticion");
            //print_r2($peticiones);
            if (isset($peticiones[0]) || $_SESSION['usuario']['tipo'] == 'lider') { /* WTF? */
                $this->orm->update_data("by_id", $peticion);
            } else {
                $this->engine->display('sinPermisos.tpl');
            }

            $this->orm->close();
        }
    }

    public function calificar() {
        $typeSession = $_SESSION['usuario']['username'];



        $options2['respuesta']['lvl2'] = "by_one";
        $cod2['respuesta']['id'] = $this->get->id;
        $cod2['respuesta']['usuario'] = $this->get->usuario;
        $this->orm->connect();
        $this->orm->read_data(array("respuesta"), $options2, $cod2);
        $respuestas = $this->orm->get_objects("respuesta");

        if (isset($respuestas[0])) { /* WTF? */
            //$options['calificacion']['lvl2'] = "by_one";
//            $cod['calificacion']['usuariocal'] = $typeSession;
//            $cod['calificacion']['usuariocom'] = $this->get->usuario;
//             $cod['calificacion']['id_respuesta'] = $this->get->id;
            $calificacion = new calificacion();
            $calificacion->set('usuariocoment', $this->get->usuario);
            $calificacion->set('usuariocalif', $typeSession);
            $calificacion->set('respuesta', $this->get->id);
            $this->orm->insert_data("normal", $calificacion);
        } else {
            $this->engine->display('sinPermisos.tpl');
        }

        $this->orm->close();
    }

    public function crear_peticion() {

        $peticion = new peticion($this->post);
        $as = $_SESSION['usuario']['username'];
        $peticion->set('usuario', $as);
        if (is_empty($peticion->get('descripcion'))) {
            throw_exception("Debe ingresar la descripcion de la petición");
        }
        if (is_empty($peticion->get('asunto'))) {
            throw_exception("Debe ingresar el asunto de la petición");
        }

        $this->orm->connect();
        $this->orm->insert_data("normal", $peticion);
        $this->orm->close();
        $this->type_warning = "success";
        $this->msg_warning = "La petición ha sido enviada correctamente";
        $this->img_warning = "correct.png";
        $this->engine->assign('img_warning', $this->img_warning);
        $this->temp_aux = 'message.tpl';

        $this->engine->assign('type_warning', $this->type_warning);
        $this->engine->assign('msg_warning', $this->msg_warning);
    }

    public function display() {

        $this->paginar();

        $varAux = $this->gvar['n_index'] . " -> " . $this->gvar['n_request'];
        $this->engine->assign('ubicationPath', $varAux);
        $this->engine->display('header.tpl');
        $this->engine->display($this->temp_aux);
        $this->engine->display('enviar_peticion.tpl');
        $this->engine->display('mostrar_peticiones.tpl');
        $this->engine->display('footer.tpl');
    }

    public function paginar() {
        $num_resultados = 10;
        $inicio = 0;
        $pagina = $this->get->pagina;
        if (isset($pagina)) {
            $inicio = ($pagina - 1) * $num_resultados;
        } else {
            $pagina = 1;
        }

        $options1['peticion']['lvl2'] = "count";
        $this->orm->connect();
        $rowcount = $this->orm->optional_select("peticion", $options1);
        $this->orm->close();

        $total_paginas = ceil($rowcount[0]->COUNT / $num_resultados);

        $cod['peticion']['inicio'] = $inicio;
        $cod['peticion']['num_resultados'] = $num_resultados;
        $options['peticion']['lvl2'] = "by_paginacion";
        $options['respuesta']['lvl2'] = "all";
        $options['calificacion']['lvl2'] = "all";
        $components['peticion']['respuesta'] = array("p_r");
        $components['respuesta']['calificacion'] = array("u_res");
        $this->orm->connect();
        $this->orm->read_data(array("peticion", "respuesta", "calificacion"), $options, $cod);
        $peticiones = $this->orm->get_objects("peticion", $components);
        $this->orm->close();

        $this->engine->assign('peticiones', $peticiones);
        $this->engine->assign('pagina', $pagina);
        $this->engine->assign('total_paginas', $total_paginas);
    }

    public function run() {
        if ($_SESSION['usuario'] != "") {
            try {
                if (isset($this->get->option)) {
                    $this->{$this->get->option}();
                }
            } catch (Exception $e) {
                $this->error = 1;
                $this->msg_warning = $e->getMessage();
                $this->img_warning = "incorrect.png";
                $this->engine->assign('type_warning', $this->type_warning);
                $this->engine->assign('msg_warning', $this->msg_warning);
                $this->engine->assign('img_warning', $this->img_warning);
                $this->temp_aux = 'message.tpl';
            }
            $this->display();
        } else {
            $this->engine->display('header.tpl');
            $this->engine->display('sinPermisos.tpl');
            $this->engine->display('footer.tpl');
        }
    }

}

$call = new c_enviar_peticion();
$call->run();
?>